bitkeeper revision 1.1277.1.8 (426045a9jwqQpAs04HKkiXc9OPbBBw)
authordjm@kirby.fc.hp.com <djm@kirby.fc.hp.com>
Fri, 15 Apr 2005 22:52:25 +0000 (22:52 +0000)
committerdjm@kirby.fc.hp.com <djm@kirby.fc.hp.com>
Fri, 15 Apr 2005 22:52:25 +0000 (22:52 +0000)
vcpu.c:
  pending interrupt fix for paravirtualization

xen/arch/ia64/vcpu.c

index 6439cdf3b51635b36ee55610b6534c2fd88f161b..bb8fc4ac07902aaef86968a76fb2f406df968964 100644 (file)
@@ -509,6 +509,7 @@ void vcpu_pend_interrupt(VCPU *vcpu, UINT64 vector)
 //printf("vcpu_pend_interrupt: overrun\n");
        }
        set_bit(vector,PSCB(vcpu,irr));
+       PSCB(vcpu,pending_interruption) = 1;
 }
 
 void early_tick(VCPU *vcpu)
@@ -637,7 +638,7 @@ IA64FAULT vcpu_get_ivr(VCPU *vcpu, UINT64 *pval)
 //printf("ZZZZZZ vcpu_get_ivr: setting insvc mask for vector %ld\n",vector);
        PSCB(vcpu,insvc[i]) |= mask;
        PSCB(vcpu,irr[i]) &= ~mask;
-       PSCB(vcpu,pending_interruption)--;
+       //PSCB(vcpu,pending_interruption)--;
        *pval = vector;
        // if delivering a timer interrupt, remember domain_itm
        if (vector == (PSCB(vcpu,itv) & 0xff)) {
@@ -746,6 +747,7 @@ IA64FAULT vcpu_set_tpr(VCPU *vcpu, UINT64 val)
 {
        if (val & 0xff00) return IA64_RSVDREG_FAULT;
        PSCB(vcpu,tpr) = val;
+       //PSCB(vcpu,pending_interruption) = 1;
        return (IA64_NO_FAULT);
 }